// OR1 LUCKY STRING
// https://www.nowcoder.com/practice/9ef1046e746248fe93751e37126bb9e0

#include <iostream>
#include <set>
#include <string>
using namespace std;
// #define repeat(end)
int fibo[] = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89};
set<string> out;
int main_or1() {
  string str;
  cin >> str;
  for (int _i = 0; _i < str.size(); _i++) {
    set<char> m;
    int f = 1;
    for (int i = _i; i < str.size(); i++) {
      m.insert(str[i]);
      if (m.size() == fibo[f]) {
        out.insert(str.substr(_i, i - _i + 1));
      } else if (m.size() == fibo[f + 1]) {
        i--, f++;
      }
    }
  }
  for (auto itor = out.begin(); itor != out.end(); itor++) {
    cout << *itor << endl;
  }
  return 0;
}
